// 定义微信 XML 消息的核心结构（根据实际接收的 XML 字段扩展）
export interface WechatXmlMessage {
  ToUserName: string; // 开发者微信号
  FromUserName: string; // 发送方OpenID
  CreateTime: string; // 消息创建时间（秒级时间戳）
  MsgType: string; // 消息类型：text（文本）、event（事件）等
  Content?: string; // 文本消息内容（仅 MsgType=text 时存在）
  MsgId?: string; // 消息ID（仅普通消息时存在）
  Event?: string; // 事件类型（仅 MsgType=event 时存在，如 SUBSCRIBE（关注）、UNSUBSCRIBE（取消关注））
  EventKey?: string; // 事件KEY值（仅特定事件时存在）
  // 其他字段：可根据微信文档补充（如图片消息的 PicUrl、语音消息的 MediaId 等）
}

// 定义 XML 解析后的根结构（微信 XML 根节点为 <xml>，解析后对应 { xml: WechatXmlMessage }）
export interface WechatXmlParseResult {
  xml: WechatXmlMessage;
}

// 微信访问令牌响应类型
export interface AccessTokenResponse {
  access_token: string;
  expires_in: number;
  errcode?: number;
  errmsg?: string;
}

// 微信用户列表响应类型
export interface FansListResponse {
  total: number;
  count: number;
  data: {
    openid: string[];
  };
  next_openid: string;
  errcode?: number;
  errmsg?: string;
}

// 微信用户信息响应类型
export interface FanInfoResponse {
  openid: string;
  nickname: string;
  sex: number;
  language: string;
  city: string;
  province: string;
  country: string;
  headimgurl: string;
  privilege: string[];
  unionid?: string;
  errcode?: number;
  errmsg?: string;
}

// 微信授权响应类型
export interface AuthResponse {
  access_token: string;
  expires_in: number;
  refresh_token: string;
  openid: string;
  scope: string;
  unionid?: string;
  errcode?: number;
  errmsg?: string;
}

// 微信用户详细信息响应类型
export interface UserInfoResponse {
  openid: string;
  nickname: string;
  sex: number;
  province: string;
  city: string;
  country: string;
  headimgurl: string;
  privilege: string[];
  unionid?: string;
  errcode?: number;
  errmsg?: string;
}

// 消息发送结果类型
export interface MessageResult {
  success: boolean;
  message: string;
  msgid?: number;
}

// 微信回调参数类型
export type CallbackParams = {
  timestamp: string;
  nonce: string;
  signature: string;
  echostr: string;
};

// 定义请求体类型接口
export interface BindPhoneDto {
  openid: string;
  role: string;
  phone: string;
}
